namespace Core.Contracts.Enums
{
    using System;


    public enum FeaturesEnum
    {
        NotDefined = 0,

        // Robots

        AccumulatorCapacity,
        AccumulatorRechargeTime,
        CpuPerformance,
        ReactorPerformance,
        ArmorAmount,
        ChemicalResistance,
        KineticResistance,
        SeismicResistance,
        ThermalResistance,
        ChemicalEHP,
        ThermalEHP,
        SeismicEHP,
        KineticEHP,
        DemobilizerResistance,
        InterferenceEmission,
        InterferenceMinimum,
        InterferencePeak,
        InterferenceRadius,
        LockingRange,
        LockingTime,
        MaximumTargets,
        MissileGuidanceFailure,
        SensorStrength,
        SignalDetection,
        SignalMasking,
        AmmunitionReloadTime,
        CargoCapacity,
        SlopeCapacity,
        SurfaceHitSize,
        TopSpeed,
        Volume,
        Falloff,

        CpuUsage,
        ReactorUsage,
        AccumulatorUsage,
        CycleTime,
        HitDispersion,
        OptimalRange,
        ElectronicWarfareStrength,
        LockResistance,

        ExplosionSize,
        CriticalHitChance,

        ElectrostaticDispersion,

        ReloadingTime,
        RobotMass,
        ModuleMass,
        MissileLauncherCycleTime,

        LazerCycleTime,
        LazerFalloff,
        LazerOptimalRange,



        // Armor modules
        ArmorRepairCycleTime,
        ArmorRepairAmount,
        ArmorRepairAccumulatorUsage,
        ArmorModuleCpuUsage,
        ArmorModuleReactorUsage,
        RemoteArmorRepairAmount,
        RemoteArmorRepairCycleTime,
        RemoteArmorRepairOptimal,
        RemoteArmorRepairAccumulatorUsage,

        // Shield
        ShieldCycleTime,
        ShieldAbsorption,
        ShieldAbsorptionRatio,
        ShieldRadius,
        ShieldReactorUsage,
        ShieldCpuUsage,
        ShieldHardenerCpuUsage,
        ShieldHardenerReactorUsage,
        ShieldHardenerAccumulatorUsage,


        // Ammo
        AmmoCapacity,
        AmmoType,
        AmmunitionScanAreaRadius,
        InjectedAccumulatorAmount,
        ThermalDamage,
        SeismicDamage,
        KineticDamage,
        ChemicalDamage,
        AmmunitionExplosionSize,
        SmallMissileExplosionSize,
        MediumMissileExplosionSize,
        MissileOptimal,

        // Weapons general
        WeaponCpuUsage,
        WeaponReactorUsage,
        WeaponAccumulatorUsage,

        // Weapons damage
        SmallMagneticWeaponDamage,
        MediumMagneticWeaponDamage,
        SmallFirearmDamage,
        MediumFirearmDamage,
        SmallLaserDamage,
        MediumLaserDamage,

        // Weapons Falloff
        SmallMagneticWeaponFalloff,
        MediumMagneticWeaponFalloff,
        SmallFirearmFalloff,
        MediumFirearmFalloff,
        SmallLaserFalloff,
        MediumLaserFalloff,

        // Weapons optimal range
        SmallMagneticWeaponOptimal,
        MediumMagneticWeaponOptimal,
        SmallFirearmOptimal,
        MediumFirearmOptimal,
        SmallLaserOptimal,
        MediumLaserOptimal,



        // Weapons cycle time
        SmallMagneticWeaponCycleTime,
        MediumMagneticWeaponCycleTime,
        SmallFirearmCycleTime,
        MediumFirearmCycleTime,
        SmallLaserCycleTime,
        MediumLaserCycleTime,
        SmallMissileLauncherCycleTime,
        MediumMissileLauncherCycleTime,

        // Weapons hit dispersion
        SmallMagneticWeaponHitDispersion,
        MediumMagneticWeaponHitDispersion,
        SmallFirearmHitDispersion,
        MediumFirearmHitDispersion,
        SmallLaserHitDispersion,
        MediumLaserHitDispersion,
        SmallMissileLauncherHitDispersion,
        MediumMissileLauncherHitDispersion,


        // Engineering

        EngineeringCpuUsage,
        DrainerAccumulatorUsage,

        // Electronic
        SignalDetectorCycleTime,
        SignalDetectorCpuUsage,
        SignalMaskerCycleTime,
        SignalMaskerCpuUsage,
        EnergyTransfererCycleTime,
        EnergyTransfererOptimal,
        EnergyTransfererTransferedEnergy,
        SignalMarkerCycleTime,
        SignalMarkerOptimal,
        SignalMarkerSignalMasking,
        EnergyDrainerCycleTime,
        EnergyNeutralizerCycleTime,
        EnergyNeutralizerOptimal,
        EnergyNeutralizersElectroDispersion,
        EnergyNeutralizerRange,
        EnergyNeutralizerNeutralizedEnergy,
        EnergyDrainerOptimal,
        EnergyDrainerDrainedEnergy,
        EnergyDrainersElectroDispersion,
        DemobilizerTopSpeed,
        DemobilizerCycleTime,
        DemobilizerOptimal,
        DemobilizerAccumulatorUsage,
        EcmCycleTime,
        EcmStrength,
        EcmOptimal,
        EcmAccumulatorUsage,
        RemoteSensorAccumulatorUsage,
        EcmCpuUsage,
        SensorSuppressorCycleTime,
        SensorSuppressorStrength,
        SensorSuppressorOptimal,
        SensorSuppressorLockingRange,
        SensorSuppressorLockingTime,
        SensorAmpLockingTime,
        SensorAmplifierCycleTime,
        SensorSuppressorAccumulatorUsage,
        RemoteSensorAmplifierCycleTime,
        RemoteSensorAmplifierLockingRangeBonus,
        RemoteSensorAmplifierLockingTimeBonus,
        RemoteSensorAmplifierOptimal,
        CargoScannerCycleTime,
        CargoScannerFalloff,
        CargoScannerOptimal,
        EccmCycleTime,
        ChassisScannerCycleTime,
        ChassisScannerFalloff,
        ChassisScannerOptimal,
        EnergyInjectorsCycleTime,


        // Industrial
        GeoscannerCycleTime,
        HarvesterOptimal,
        HarvesterCycleTime,
        MinerOptimal,
        MinerCycleTime,
        HarvestedAmount,
        MinedAmount,
        GeoscannerAccuracy,

        // SAP Module
        SapModuleCycleTime,
        SapModuleOptimal,

        // Interference module
        InterferenceModuleOptimal,
        InterferenceModuleAccumulatorUsage,
        InterferenceModuleCycleTime,

        // ERP
        ThermalDamageRecovery,
        SeismicDamageRecovery,
        KineticDamageRecovery,
        ChemicalDamageRecovery,
        EnergyDrainerElectrostaticDispersion,
        EnergyInjectorCycleTime,
        EnergyNeutralizerElectrostaticDispersion,
        InterferenceEmitterCycleTime,
        InterferenceEmitterOptimal,
        InterferenceEmitterRadiusModification,
        InterferenceEmitterStrengthModification,
        TargetMarkerCycleTime,
        TargetMarkerOptimal,
        TargetMarkerSignalMasking,

        // Nexus
        NexusCycleTime,
        NexusAccumulatorUsage,
        NexusBonus,
        NexusModuleCycleTime,
        NexusModuleEffectRadius,
        NexusModuleAccumulatorRechargeTimeModification,
        NexusModuleArmorModification,
        NexusModuleArmorRepairAmountModification,
        NexusModuleCriticalHitChanceModification,
        NexusModuleEffectRangeModification,
        NexusModuleEwModuleOptimalRange,
        NexusModuleIndustrialModuleAccumulatorUsage,
        NexusModuleIndustrialModuleCycleTime,
        NexusModuleLockingRangeModification,
        NexusModuleLockingTimeModification,
        NexusModuleShieldAbsorptionModification,
        NexusModuleSurfaceHitSizeModification,
        NexusModuleTopSpeedModification,
        NexusModuleWeaponCycleTime,

        ScanAreaRadius,
        OperationalTime,

        MissileLauncherOptimal,
        MissileLauncherDamage,
        EnergyTransfererAccumulatorUsage,
        IndustrialCpuUsage,
        IndustrialReactorUsage,
        MinerAccumulatorUsage,
        HarvesterAccumulatorUsage,
        SmallMissileLauncherDamage,
        MediumMissileLauncherDamage,
        EnergyNeutralizerAccumulatorUsage,
        AccumulatorStability,
        BuildingCpuUsage,
        BuildingReactorUsage,
        TerraformerCycleTime,
        
    }
}